#!/bin/bash

if [ $# != 1 ]; then
    echo "Usage: $0 <new version number>"
    exit 1
fi

if [ ! -d ./src -a ! -f redhat.spec ]; then
    echo "Cannot find the ./src directory or the ./redhat.spec file"
    echo "Are you in the project root directory?"
    exit 2
fi

NEW_VERSION=$1
OLD_VERSION=$(cd src;python -c "from setup_common import *; print get_version();")
rm -f src/setup_common.py[co]

# Prepare ChangeLog entry for the python-dmidecode.spec file
TSTAMP="$(date +%a\ %b\ %d\ %Y)"
FNAME="$(git config user.name)"
EMAIL="$(git config user.email)"
CHLOG="$TSTAMP $FNAME <$EMAIL> - ${NEW_VERSION}-1"

# Prepare regexp script to modify python-dmidecode.spec
{
cat <<EOF2
,s/^Version: .*/Version: ${NEW_VERSION}/
,s/^Release: .*/Release: 1%{?dist}/
,s/%changelog/%changelog\\
* ${CHLOG}\\
- Update to new release\\
/
w
EOF2
} > .chversion

# Get confirmation of version change
cat <<EOF

  **
  **  Changing version number
  **

  Are you sure you want to change the version number?

     From: ${OLD_VERSION}
     To:   ${NEW_VERSION}

EOF

echo -n "  Please confirm: (yes/no) "
read conf

case $conf in
    yes|YES)
        echo
        echo " ** Updating src/version.h"
        printf ",s/^#define VERSION \".*\"/#define VERSION \"${NEW_VERSION}\"/\nw\n" | ed src/version.h 2>/dev/null

        echo " ** Updating contrib/python-dmidecode.spec"
        cat .chversion | ed contrib/python-dmidecode.spec 2> /dev/null
        if [ $? = 0 ]; then
            rm -f .chversion
        fi
        echo
        echo " ** git add src/version.h contrib/python-dmidecode.spec"
        git add src/version.h contrib/python-dmidecode.spec
        echo "-----------------------------------------------------------------------------------"
        git diff --cached
        echo "-----------------------------------------------------------------------------------"
        echo
        echo " **                                                                   **"
        echo " ** REMEMBER to COMMIT this change when you have validated the result **"
        echo " **                                                                   **"
        echo
        ;;
    *)
        echo
        echo
        echo " ** Not confirmed.  Aborting."
        echo
        ;;
esac

